import 'dart:convert';

import 'package:flutter/services.dart';

import 'empUtils/EMPCustomCell.dart';

import 'package:flutter/material.dart';
import 'empUtils/EMPJsonUtil.dart';
import 'empUtils/EMPImageUtils.dart';
import 'empUtils/EMPAppBar.dart';
import 'package:demo/EMPABEmployeeModel.dart';
import 'package:demo/EMPABDepartmentModel.dart';

class EMPTestCustomCellVC extends StatefulWidget {
  final String title;

  EMPTestCustomCellVC({required this.title});

  @override
  _EMPTestCustomCellVCState createState() => _EMPTestCustomCellVCState();
}

class _EMPTestCustomCellVCState extends State<EMPTestCustomCellVC> {
  List<Module> modules = [];

  List<bool> selectedItems = []; // 用于跟踪选中的项


  List<EMPABDepartmentModel> testModules = [];

  @override
  void initState() {
    super.initState();
    fetchData(); // 在初始化时获取数据

    testfetchData();
  }

  // 模拟网络请求
  Future<void> fetchData() async {
    String jsonString = await rootBundle.loadString('lib/assets/testmodel.json');

    Map<String, dynamic> data = jsonDecode(jsonString);

    // 将解析后的数据转换为 Module 对象列表
    List<Module> newModules =
    List.from(data['modules']).map((json1) => Module.fromJson(json1)).toList();

    // Module myModel = Module.fromJson(data);

    setState(() {
      modules = newModules; // 更新模块列表
      selectedItems = List.generate(modules.length, (index) => false); // 初始化选中状态列表
    });

  }

  Future<void> testfetchData() async {
//测试
    String testjsonString = await rootBundle.loadString('lib/assets/dept.json');
    List textdata = jsonDecode(testjsonString);
    // 将解析后的数据转换为 Module 对象列表
    List<EMPABDepartmentModel> testModules =
    List.from(textdata).map((json1) => EMPABDepartmentModel.fromJson(json1)).toList();

    for (var employee in testModules) {
      print(employee.toString());  // 使用重写的 toString 方法
    }

  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: EMPAppBar(
        centerTitle: 'aaaaaada',
        actionName: 'fsdfsfhg',
        // isBack: true,
      ),
      body: SafeArea(
        minimum:EdgeInsets.only(bottom: 15),
        child: ListView.builder(
          itemCount: modules.length,
          itemBuilder: (context, index) {
            Module module = modules[index];
            print('richtitle ${module.params.richtitle}');

            return EMPCustomCell( //EMPeDefaultCell，EMPAvatarTitleCell，EMPAvatarTitleIconCell,EMPTitleSwitchCell,EMPTitleBtnCell
              index == 0 ? CustomCellType.EMPAvatarTitleCell : CustomCellType.EMPSelAvatarTitleCell,
              '${module.name} $index',
                  () {
                print('Cell $index 被点击了');
              },
              arrowIcon: 'other/ic_arrow_right',
              avatarIcon: 'other/icon_avatar',
              subtitle: 'SubtitleSubtitleSubtitletleSubtitletleSubtitleCelltleSubtitleCelltleSubtitle $index',
              subtitleTwo: 'SubtitleSubtitleSubtitletleSubtitletleSubtitleCelltleSubtitleCelltleSubtitle $index',
              rightTitle: 'SubtitleSubtitleSubtit哈letleSubtitletleSubtitleCelltleSubtitleCelltleSubtitle $index',
              switchValue: module.switchValue,
              onValueChanged: (value) {
                print('$value');

                Module module1 = modules[index + 1];
                module1.name = '这是刷新后的数据';
                Future.delayed(Duration(seconds: 2), () {
                  setState(() {});
                });
              },
              clickBtn: () {
                print('点击按钮');
              },
              richTitle: module.params.richtitle,
              richColor: '1B6EFD',
            );
          },
        ),
      ),
    );
  }
}

  class Module {
  bool switchValue;
  int age;
  String name;
  String subtitle;
  String subtitleTwo;
  Params params;

  Module({
  required this.switchValue,
  required this.age,
  required this.name,
  required this.subtitle,
  required this.subtitleTwo,
  required this.params,
  });

  factory Module.fromJson(Map<String, dynamic> json) {
  return Module(
  switchValue: json['switch'],
  age: json['age'],
  name: json['name'],
  subtitle: json['subtitle'],
  subtitleTwo: json['subtitleTwo'],
  params: Params.fromJson(json['params']),
  );
  }
  }

  class Params {
  String richtitle;

  Params({
  required this.richtitle,
  });

  factory Params.fromJson(Map<String, dynamic> json) {
  return Params(
  richtitle: json['richtitle'] ?? '',
  );
  }
  }

// // 可变 Map，可以进行增删改操作  默认是可变的
// Map<String, dynamic> mutableMap = {
//   'name': 'John Doe',
//   'age': 30,
// };
// // 创建不可变 Map
// Map<String, dynamic> immutableMap = Map<String, dynamic>.unmodifiable({
//   'name': 'Jane Doe',
//   'age': 25,
// });
// // 将不可变 Map 转换为可变 Map
// Map<String, dynamic> mutableMap = Map<String, dynamic>.from(immutableMap);
// // 将可变 Map 转换为不可变 Map
// Map<String, dynamic> immutableMap = Map<String, dynamic>.unmodifiable(mutableMap);

// // 使用 const 关键字创建不可变 List
// const List<int> immutableList = [1, 2, 3];
// // 使用 UnmodifiableListView 创建不可变 List
// import 'dart:collection';
// List<int> mutableList = [1, 2, 3];
// var unmodifiableList = UnmodifiableListView<int>(mutableList);

// //使用 List.unmodifiable 方法将可变 List 转换为不可变 List：
// List<int> mutableList = [1, 2, 3];
// var immutableList = List<int>.unmodifiable(mutableList);
// //使用 UnmodifiableListView 类将可变 List 转换为不可变 List：
// import 'dart:collection';
// List<int> mutableList = [1, 2, 3];
// var immutableList = UnmodifiableListView<int>(mutableList);

// //使用 List.from 方法将不可变 List 转换为可变 List：
// const List<int> immutableList = [1, 2, 3];
// var mutableList = List<int>.from(immutableList);

// // 模拟网络请求刷新
// Future<void> fetchData() async {
//
//   String jsonString = await rootBundle.loadString('lib/assets/testmodel.json');
//
//   Map<String, dynamic> data = jsonDecode(jsonString);
//
//   // Module jssModel = Module.fromJson(data);
//
//   // 将解析后的数据转换为 Module 对象列表
//   List<Module> newModules = List.from(data['modules'])
//       .map((json) => Module.fromJson(json))
//       .toList();
//
//   setState(() {
//     modules = newModules; // 更新模块列表
//   });
// }

// body:ListView(//水平列表
// scrollDirection: Axis.horizontal,
// children: <Widget>[
// Container(width: 100, color: Colors.red),
// Container(width: 100, color: Colors.blue),
// Container(width: 100, color: Colors.green),
// // 添加更多的水平列表项...
// ],
// )

// //隐藏组件
// return Visibility(
// visible: index == 1 ? true : false,
// child:
// );
